function NWqd_tz_gj(QJPZ) {
    //{对象} this.QJPZ  全局配置
    this.QJPZ = QJPZ;
    /**
     * 从对象中，取出 路径指定的对象（比如 DD对象）。
     * @param {对象} _DX 对象
     * @param {文本} lujing 路径 比如："ab.cd.ee.DD"
     * @returns 对象|null
     */
    this._ngj_hqPZ = function (_DX, lujing) {
        let JGdx = _DX;//我们要的配置（对象。具体配置在对象里面）
        let _ljSZ = lujing.split(".");
        for (let i = 0; i < _ljSZ.length; i++) {
            if (_ljSZ[i]) {
                JGdx = JGdx[_ljSZ[i]];
                if (!JGdx) {
                    return null;
                }
            }
        }
        return JGdx;
    }

    /**
      * 把lujing指向的对象的 方法（地址），复制一份到 YTdx
      * @param {对象} YTdx 源头对象
      * @param {文本} lujing 路径 比如："ab.cd.ee.DD"
      */
    this.tzFF = function (YTdx, lujing) {
        if (!this.QJPZ || !YTdx) {
            console.log('NW00.js:_ngj_tzDX(): 没有源配置，或没有被拓展的对象。无法执行拓展！ ')
            return;
        }

        let _pzDX = lujing;//用户传入的 自定义方法对象|路径
        if (typeof lujing == 'string') {//如果是路径。
            _pzDX = this._ngj_hqPZ(this.QJPZ, lujing);//找到路径所绑定的对象。
        }


        if (_pzDX) {
            //_njk_tuozhan_qd0_ 方法，是拓展对象，自动调用的方法（在拓展完成后），假如，源头对象已经 存在这个方法，一定会被拓展方法覆盖，
            //所以，开始拓展前，如果源头对象存在 _njk_tuozhan_qd0_，先保存到临时对象中。
            let dxFF;
            let leiFF;
            let qd0Ming = '_njk_qd0_tuozhan_';
            if (YTdx[qd0Ming]) {
                dxFF = YTdx[qd0Ming];				//对象方法 		不是对象方法，就是类方法
                leiFF = YTdx.__proto__[qd0Ming];	//类方法 		不是对象方法，就是类方法
            }
            //开始拓展 源头对象 的方法
            for (let ming in _pzDX) {
                if (ming == qd0Ming) {//先不拓展 这个方法
                    continue;
                }
                if (_pzDX.__proto__[ming]) {
                    YTdx.__proto__[ming] = _pzDX.__proto__[ming];//用户写的是类方法，则以类方法对接
                } else {
                    YTdx[ming] = _pzDX[ming];//用户写的是 对象方法，则以对象方法对接
                }
            }
            //拓展完后，检测拓展配置（对象），是否存在 _njk_tuozhan_qd0_，如果存在，则，一定是拓展到了 _YTdx（源头对象）里。
            if (_pzDX[qd0Ming]) {
                if (leiFF) {
                    YTdx.__proto__[qd0Ming] = _pzDX[qd0Ming];
                    YTdx[qd0Ming]();
                    YTdx.__proto__[qd0Ming] = leiFF;//还原 自己的
                } else if (dxFF) {
                    YTdx[qd0Ming] = _pzDX[qd0Ming];
                    YTdx[qd0Ming]();
                    YTdx[qd0Ming] = dxFF; //还原 自己的
                } else {
                    if (_pzDX.__proto__[qd0Ming]) {
                        YTdx.__proto__[qd0Ming] = _pzDX[qd0Ming];
                        YTdx[qd0Ming]();
                        // _YTdx.__proto__[qd0Ming] = undefined;
                        delete YTdx.__proto__[qd0Ming];
                    } else {
                        YTdx[qd0Ming] = _pzDX[qd0Ming];
                        YTdx[qd0Ming]();
                        // _YTdx[qd0Ming] = undefined;
                        delete YTdx[qd0Ming];
                    }
                }
            }
            _pzDX = undefined;
        }
    }
}